﻿'''
题目描述
给定一个mxn的矩阵，由若干字符'X'和'O'构成，'X'表示该处已被占据，'O'表示该处空闲，请找到最大的单入口空闲区域
解释:
空闲区域是由连通的'O'组成的区域，位于边界的'O'可以构成入口.单入口空闲区域即有且只有一个位于边界的'O'作为入口的由连通的'O'
组成的区域.如果两个元素在水平或垂直方向相邻，则称它们是“连通”的
输入描述
第一行输入为两个数字，第一个数字为行数m，第二个数字为列数n，两个数字以空格分隔，
1<=m,n<=200.
剩余各行为矩阵各行元素，元素为'X'或'O'，各元素间以空格分隔
输出描述
若有唯一符合要求的最大单入口空闲区域，输出三个数字
1.   
第一个数字为入口行坐标(0~m-1)
2.   
第二个数字为入口列坐标(0~n-1)
3.   
第三个数字为区域大小
三个数字以空格分隔;
若有多个符合要求，则输出区域大小最大的，若多个符合要求的单入口区域的区域大小相同，则此时只需要输出区域大小，不需要输出入
口坐标
若没有，输出NULL
示例1：
输入：
4 5
X X X X X
O O O X X
X O O X X
X X X X X
输出：
1 0 5
示例1：
输入：
4 5
X X X X X
O O O X X
O O O X X
X X X X X
输出：
NULL
示例1：
输入：
5 5
X X X X X
O O O X X
O O O X X
X X X X X
X X X X O
输出：
4 4 1
'''
#读取输入
m,n = map(int,input().split())
matrix = []
for _ in range(m):
    matrix.append(input().split())

#深度优先搜索
check = set()       #定义集合用来存储访问过的空闲区域坐标

def dfs(i, j, count, out):     #i,j当前开始搜索位置坐标，count当前空闲区域大小，out入口坐标
    #如果当前坐标越界或被占用或已访问过，返回count
    if i < 0 or i >= m or j < 0 or j >= n or matrix[i][j] == 'X' or (i,j) in check:
        return count
    #否则满足条件，空闲区域+1
    count += 1
    check.add((i,j))    #加入已访问集合，注意使用元组，已区分(i,j)和(j,i)
    #如果当前坐标刚好位于边界，则加入入口坐标列表
    if i == 0 or i == m - 1 or j == 0 or j == n - 1:
        out.append([i,j])
    #继续向四个方向进行深度优先搜索
    directions = [(-1,0),(1,0),(0,-1),(0,1)]
    for dire in directions:
        new_i = i + dire[0]
        new_j = j + dire[1]
        count = dfs(new_i, new_j, count, out)
    return count    #注意返回数量

#遍历矩阵，找到空闲区域O进行深度优先搜索
result = []
for i in range(m):
    for j in range(n):
        if matrix[i][j] == 'O':
            out = []
            count = dfs(i, j, 0, out)
            if len(out) == 1:       #找到单入口空闲区域
                out[0].append(count)    #将数量加入到坐标后
                result.append(out[0])
#判断结果并输出
if len(result) == 0:    #无符合的
    print('NULL')
elif len(result) == 1:
    print(' '.join(str(res) for res in result[0]))
else:
    result.sort(key= lambda x: -x[2])   #按数量从大到小排序
    if result[0][2] == result[1][2]:    #多个数量相同的
        print(result[0][2])
    else:
        print(' '.join(str(res) for res in result[0]))

